Primary Cause of Suspensions for Homeless and Foster Youth
Figure 3
library(tidyr)
library(dplyr)
library(ggplot2)
suspensionsFHA$drugPerEnroll = suspensionsFHA$Suspension.Count.Illicit.Drug.Related / suspensionsFHA$Cumulative.Enrollment
suspensionsFHA$defianceperenroll = suspensionsFHA$Suspension.Count.Defiance.Only/suspensionsFHA$Cumulative.Enrollment
suspensionsFHA$weaponsPerEnroll = suspensionsFHA$Suspension.Count.Weapons.Possession/suspensionsFHA$Cumulative.Enrollment
suspensionsFHA$OtherPerEnroll = suspensionsFHA$Suspension.Count.Other.Reasons/suspensionsFHA$Cumulative.Enrollment
suspensionsFHA$ViolentPerEnroll = (suspensionsFHA$Suspension.Count.Violent.Incident..Injury. + suspensionsFHA$Suspension.Count.Violent.Incident..No.Injury.) / suspensionsFHA$Cumulative.Enrollment
suspensionsFHAggplot2 = aggregate( suspensionsFHA$drugPerEnroll, list(RC = suspensionsFHA$ReportingCategory, weapons = suspensionsFHA$weaponsPerEnroll, other = suspensionsFHA$OtherPerEnroll, defiance = suspensionsFHA$defianceperenroll, violent = suspensionsFHA$ViolentPerEnroll), mean, na.rm = T)
suspensionsFHAggplot2= suspensionsFHA %>%
group_by(ReportingCategory) %>%
summarise(VPE = mean(ViolentPerEnroll, na.rm = T), DPE = mean(drugPerEnroll, na.rm = T), DefPE = mean(defianceperenroll, na.rm = T), WPE = mean(weaponsPerEnroll, na.rm = T), OPE = mean(OtherPerEnroll, na.rm = T))
susFHAPlot = gather(suspensionsFHAggplot2, RC, value, VPE:OPE)
susFHAPlot$value = susFHAPlot$value*100
Type = ggplot(data = susFHAPlot, aes(ReportingCategory, value)) +geom_bar(aes(fill = RC), stat = "identity", position = "dodge") +
theme_minimal()+
scale_x_discrete(labels=c("Foster Youth", "Homeless Youth", "Total Students")) +
xlab("Student Groups") +
ylab("Average Rate of Suspension Per Enrollment")+
theme(plot.title = element_text(size = 11.5, face = "bold"))+
ggtitle("Measuring Type of Suspension for Foster Youth and Homeless Youth") +
scale_fill_discrete(name = "Groups", labels = c( "Defiance Only", "Illicit Drugs", "Other", "Violent(Injury and No Injury)", "Weapons"))
Type
Violent suspensions5 are the leading cause of suspension for foster youth, homeless youth, and all students in California. There is a significant difference between the rate of suspension for violent incidents and any other reason for suspension. For foster youth, that difference is larger than the difference for homeless youth and all students.
Figure 4
ViolentMean = aggregate(suspensionsFHA$ViolentPerEnroll, list(suspensionsFHA$ReportingCategory), mean, na.rm=T)
suspensionsFHA$AvgViolentSuspension = (suspensionsFHA$Suspension.Count.Violent.Incident..Injury. + suspensionsFHA$Suspension.Count.Violent.Incident..No.Injury.)/suspensionsFHA$Cumulative.Enrollment
ViolentMean$x = ViolentMean$x*100
library(ggplot2)
AVS = ggplot(data = ViolentMean, aes(x=Group.1, y=x, fill=Group.1)) +geom_bar(stat="identity") + geom_text(aes(label = sprintf("%0.2f", round(x, digits = 2))), vjust=-0.3, color="black", size=3.5) + theme_minimal()+
scale_x_discrete(labels=c("Foster Youth", "Homeless Youth", "Total Students")) +
xlab("Student Groups") +
ylab("Average Rate of Violent Suspensions Per Enrollment")+
ggtitle("Average Rate of Violent Suspensions Per Enrollment of Foster and Homeless Youth") +
theme(plot.title = element_text(size = 11.2, face = "bold"))+
scale_fill_discrete(name = "Groups", labels = c("Foster Youth", "Homeless Youth", "Total Students"))+
theme(legend.position="none")
AVS
Similar to average suspension rates outcomes, foster youth had the highest violent suspension rate for all three groups. The rates between foster youth, homeless youth, and total students are significantly different. The rate of violent suspensions for foster youth is two times the rate of violent suspension for homeless youth and more than three times the rate of suspension for all students. The rate of violent suspensions for homeless youth is almost two times the violent suspension rate of all students. This follows the trend for the average rate of suspensions for foster youth, homeless youth and total students reported in Figure 2.
Figure 5
suspensionsCalifornia = read.csv("suspensionByCounty.txt", sep = "\t", stringsAsFactors = F, na.strings = "")
suspensionsCountyFHA = subset(suspensionsCalifornia, studentgroup == "FOS" | studentgroup == "HOM" | studentgroup == "ALL")
suspensionsChangeFHA = aggregate(suspensionsCountyFHA$priorstatus, list(suspensionsCountyFHA$studentgroup), mean, na.rm = T)
suspensionsChangeFHA$Group.1 = factor(suspensionsChangeFHA$Group.1, levels=c("FOS", "HOM", "ALL"))
suspensionsCalifornia = read.csv("suspensionByCounty.txt", sep = "\t", stringsAsFactors = F, na.strings = "")
suspensionsCountyFHA = subset(suspensionsCalifornia, studentgroup == "FOS" | studentgroup == "HOM" | studentgroup == "ALL")
suspensionsChangeFHA = aggregate(suspensionsCountyFHA$priorstatus, list(suspensionsCountyFHA$studentgroup), mean, na.rm = T)
suspensionsChangeFHA$Group.1 = factor(suspensionsChangeFHA$Group.1, levels=c("FOS", "HOM", "ALL"))
suspensionsavgFHA$Group.1[suspensionsavgFHA$Group.1 == "SF"] <- "FOS"
suspensionsavgFHA$Group.1[suspensionsavgFHA$Group.1 == "SH"] <- "HOM"
suspensionsavgFHA$Group.1[suspensionsavgFHA$Group.1 == "TA"] <- "ALL"
suspensionsavgFHA$Year = "2017-2018"
suspensionsChangeFHA = arrange(suspensionsChangeFHA, desc(x))
suspensionsChangeFHA$Year = "2016-2017"
suspensionChange = bind_rows(suspensionsChangeFHA, suspensionsavgFHA)
changeFHAggplot2= suspensionChange %>%
group_by(x)
changeFHAggplot2 = rename(changeFHAggplot2, Category = "Group.1", Rate = "x")
changeFHAggplot2$Category = factor(changeFHAggplot2$Category, levels=c("FOS", "HOM", "ALL"))
Change = ggplot(changeFHAggplot2, aes(x= Year, y= Rate, color= Category))+
geom_line(aes(group=Category), stat = "identity")+
labs(colour = "Groups")+
scale_x_discrete(labels=c("2016-2017", "2017-2018")) +
xlab("School Year") +
ylab("Average Rate of Suspension Per Enrollment")+
theme(plot.title = element_text(size = 11.5, face = "bold"))+
ggtitle("Measuring Change in Rate of Suspension From 2016-2017 to 2017-2018")+
scale_color_discrete(labels=c("Foster Youth", "Homeless Youth", "Total Students"))+
theme_minimal()
Change
By comparison, when viewing the rates in the 2016-17 school year, the average suspension rates per enrollment of this report’s three focus groups were lower than the 2017-2018 school year. The rate of suspension for foster youth almost doubled between the 2016-2017 and 2017-2018 school year. The rate of suspension for homeless youth also almost doubled between the 2016-2017 and 2017-2018 school year. The average rate of suspension for all students in the state of California only increased by 2%.
Figure 6
suspensionsCountyF = subset(suspensionsCalifornia , studentgroup == "FOS")
suspensionsSacramento = subset(suspensionsCountyF, countyname == "Sacramento")
suspensionsSacDistricts = subset(suspensionsSacramento, districtname == "Sacramento City Unified")
suspensionssacMean = mean(suspensionsSacDistricts$currstatus, na.rm = T)
suspensionsCountyF$suspensionrate = suspensionsCountyF$currnumer / suspensionsCountyF$currdenom
suspensionsByCounty = aggregate(suspensionsCountyF$suspensionrate, list(suspensionsCountyF$countyname), mean, na.rm=T)
library(sf)
library(raster)
library(dplyr)
library(spData)
#library(spDataLarge)
library(tmap) # for static and interactive maps
library(leaflet) # for interactive maps
library(mapview) # for interactive maps
library(ggplot2) # tidyverse vis package
library(shiny) # for web applications
library(rvest)
library(stringr)
library(rgdal)
library(rmapshaper)
library(mapview)
wd = "/Users/sdelfino/Desktop/suspension_california_files/CA County"
USCounties = readOGR(dsn=wd, layer = "tl_2016_us_county",stringsAsFactors = F, GDAL1_integer64_policy = T)
## OGR data source with driver: ESRI Shapefile
## Source: "/Users/sdelfino/Desktop/suspension_california_files/CA County", layer: "tl_2016_us_county"
## with 3233 features
## It has 17 fields
## Integer64 fields read as doubles: ALAND AWATER
californiaCounties = subset(USCounties,STATEFP == "06")
pal = colorNumeric("viridis",NULL)
suspensionsByCounty = rename(suspensionsByCounty, NAME=Group.1, FosterSuspensions=x)
californiaCounties@data = left_join(californiaCounties@data, suspensionsByCounty, by="NAME")
californiaCounties@data$FosterSuspensions = californiaCounties@data$FosterSuspensions*100
map = leaflet(californiaCounties) %>%
addProviderTiles("CartoDB.Positron") %>%
addPolygons(fillOpacity = 0.8,
weight = 1,
color = "white",
fillColor = ~pal(as.numeric(californiaCounties$FosterSuspensions)),
label = californiaCounties$NAMELSAD) %>%
addLegend(pal = pal,
values = ~as.numeric(californiaCounties$FosterSuspensions),
title = "Suspension Rate Per Enrollment for Foster Youth")
map
library(mapview)
library(webshot)
mapshot(map, file = "~/Desktop/suspension_california_files/SuspensionsMap.png")
Displayed in figure 6 is the suspension rate of foster youth by county. The yellow and green counties have the higher suspension rates, while the blue and purple counties have the lower suspension rates. There is no data reported on the county’s’s suspension rate of foster youth for the counties that are gray.
The county with the highest suspension rate of foster youth in the state of California is Mariposa County, where 38% of their foster youth were suspended per enrollment. Modoc County had the second highest with 26% of their foster youth being suspended. Following these counties were Mendocino County with 23% and Sacramento County with 20%. The county with the lowest suspension rate of foster youth is Inyo County with 2% of their foster youth being suspended in the 2017-2018 school year.
Figure 7
suspensionsMar = subset(suspensionsCountyF, countyname == "Mariposa")
suspensionsMar = aggregate(suspensionsMar$suspensionrate, list(suspensionsMar$schoolname), mean, na.rn = T)
suspensionsMar$x[is.na(suspensionsMar$x)] <- 0
suspensionsMar$x = suspensionsMar$x*100
Mar = ggplot(data = suspensionsMar, aes(x=Group.1, y=x, fill=Group.1)) +geom_bar(stat="identity") + geom_text(aes(label = sprintf("%0.2f", round(x, digits = 2))), vjust=-0.3, color="black", size=3.5) + theme_minimal()+
scale_x_discrete(labels=c("Coulterville High", "Greeley Hill Elementary", "Lake Don Pedro Elementary", "Mariposa County High", "Mariposa County High", "Monarch Academy", "Sierra Foothill Charter", "Sierra Home", "Spring Hill High (Continuation)", "Woodland Elementary")) +
theme(axis.text.x = element_text(angle = 45, hjust = 1, size=7))+
xlab("Schools") +
ylab("Average Rate of Suspensions Per Enrollment")+
ggtitle("Average Rate of Suspensions Per Enrollment of Foster Youth in Mariposa County") +
theme(plot.title = element_text(size = 11, face = "bold"))+
scale_fill_discrete(name = "Groups", labels = c("Coulterville High", "Greeley Hill Elementary", "Lake Don Pedro Elementary", "Mariposa County High", "Mariposa County High", "Monarch Academy", "Sierra Foothill Charter", "Sierra Home", "Spring Hill High Continuation", "Woodland Elementary"))+
theme(legend.position="none")
Mar
Figure 7 displays all of the schools in Mariposa County. Of those schools, only two schools, Mariposa County High and Spring Hill High (Continuation), suspended foster youth, but they suspended those students at a high rate. The eight schools that did not suspend any foster youth had very few of these students attending the school, with 10 or fewer from that population. Mariposa County High had 27 foster youth attending their school. Spring Hill High (Continuation) had 17 foster youth attending their school.
Figure 8
suspensionsMod = subset(suspensionsCountyF, countyname == "Modoc")
suspensionsMod = aggregate(suspensionsMod$suspensionrate, list(suspensionsMod$schoolname), mean, na.rn = T)
suspensionsMod$x[is.na(suspensionsMod$x)] <- 0
suspensionsMod$x = suspensionsMod$x*100
Mod = ggplot(data = suspensionsMod, aes(x=Group.1, y=x, fill=Group.1)) +geom_bar(stat="identity") + geom_text(aes(label = sprintf("%0.2f", round(x, digits = 2))), vjust=-0.3, color="black", size=3.5) + theme_minimal()+
scale_x_discrete(labels=c("Alturas Elementary", "High Desert Community Day School", "Modoc County Juvenile Court", "Modoc County Special Education", "Modoc High", "Modoc Middle", "Surprise Valley Elementary", "Surprise Valley High", "Tulelake Basin Elementary")) +
theme(axis.text.x = element_text(angle = 45, hjust = 1, size=7))+
xlab("Schools") +
ylab("Average Rate of Suspensions Per Enrollment")+
ggtitle("Average Rate of Suspensions Per Enrollment of Foster Youth in Modoc County") +
theme(plot.title = element_text(size = 11, face = "bold"))+
scale_fill_discrete(name = "Groups", labels = c("Alturas Elementary", "High Desert Community Day School", "Modoc County Juvenile Court", "Modoc County Special Education", "Modoc High", "Modoc Middle", "Surprise Valley Elementary", "Surprise Valley High", "Tulelake Basin Elementary"))+
theme(legend.position="none")
Mod
Figure 8 shows all of the schools in Modoc County. Of those schools, only two schools suspended foster youth. Alturas Elementary School had very few suspensions of foster youth with 13 foster youth attending their school. The high rate of suspension is driven by one school: Modoc County Juvenile Court. Modoc County Juvenile Court had 22 students attending their school. The schools that did not suspend foster youth had seven or fewer foster youth attending their school.
Figure 9
suspensionsMend = subset(suspensionsCountyF, countyname == "Mendocino")
suspensionsMend = aggregate(suspensionsMend$suspensionrate, list(suspensionsMend$schoolname), mean, na.rn = T)
suspensionsMend$x[is.na(suspensionsMend$x)] <- 0
suspensionsMend = suspensionsMend %>%
arrange(desc(x), desc(Group.1))
suspensionsMend = suspensionsMend[1:7,]
suspensionsMend$x = suspensionsMend$x*100
suspensionsMend$Group.1 = factor(suspensionsMend$Group.1, levels = c("Eagle Peak Middle", "Pomolita Middle", "Oak Manor Elementary", "Ukiah High", "Willits High", "Nokomis Elementary", "Yokayo Elementary"))
Mend = ggplot(data = suspensionsMend, aes(x=Group.1, y=x, fill=Group.1)) +geom_bar(stat="identity") + geom_text(aes(label = sprintf("%0.2f", round(x, digits = 2))), vjust=-0.3, color="black", size=3.5) + theme_minimal()+
scale_x_discrete(labels=c("Eagle Peak Middle", "Pomolita Middle", "Oak Manor Elementary", "Ukiah High", "Willits High", "Nokomis Elementary", "Yokayo Elementary")) +
theme(axis.text.x = element_text(angle = 45, hjust = 1, size=7))+
xlab("Schools") +
ylab("Average Rate of Suspensions Per Enrollment")+
ggtitle("Average Rate of Suspensions Per Enrollment of Foster Youth in Mendocino County") +
theme(plot.title = element_text(size = 11, face = "bold"))+
scale_fill_discrete(name = "Groups", labels = c("Eagle Peak Middle", "Pomolita Middle", "Oak Manor Elementary", "Ukiah High", "Willits High", "Nokomis Elementary", "Yokayo Elementary"))+
theme(legend.position="none")
Mend
Mendocino County consists of 40 public K-12 schools. In the graph above are the only schools that suspended foster youth. 17.5% of the schools in Mendocino County suspended foster youth, but Mendocino County has the third highest suspension rate in the state. The schools that did not suspend foster youth had 16 or fewer foster youth attending their school. Eagle Peak Middle, Willits High, and Nokomis Elementary all have the fewest number of foster youth attending their school of the schools suspending foster youth, with 12 foster youth attending their school. The schools that suspended foster youth had between 28 and 12 foster youth attending their school.
Figure 10
suspensionsSac = subset(suspensionsCountyF, countyname == "Sacramento")
suspensionsSac = aggregate(suspensionsSac$suspensionrate, list(suspensionsSac$schoolname), mean, na.rn = T)
suspensionsSac$x[is.na(suspensionsSac$x)] <- 0
suspensionsSac = suspensionsSac %>%
arrange(desc(x), desc(Group.1))
suspensionsSac = suspensionsSac[1:15,]
suspensionsSac$x = suspensionsSac$x*100
suspensionsSac$Group.1 = factor(suspensionsSac$Group.1, levels = c("Rosa Parks Elementary", "La Vista Center", "Palmiter Special Education", "Harriet G. Eddy Middle", "C. K. McClatchy High", "Monterey Trail High", "Del Campo High", "Casa Roble Fundamental High", "John F. Kennedy High", "San Juan High", "Pleasant Grove High", "Encina Preparatory High", "Samuel Jackman Middle", "Mesa Verde High", "Rio Americano High"))
Sac = ggplot(data = suspensionsSac, aes(x=Group.1, y=x, fill=Group.1)) +geom_bar(stat="identity") + geom_text(aes(label = sprintf("%0.2f", round(x, digits = 2))), vjust=-0.3, color="black", size=3.5) + theme_minimal()+
scale_x_discrete(labels=c("Rosa Parks Elementary", "La Vista Center", "Palmiter Special Education", "Harriet G. Eddy Middle", "C. K. McClatchy High", "Monterey Trail High", "Del Campo High", "Casa Roble Fundamental High", "John F. Kennedy High", "San Juan High", "Pleasant Grove High", "Encina Preparatory High", "Samuel Jackman Middle", "Mesa Verde High", "Rio Americano High")) +
theme(axis.text.x = element_text(angle = 45, hjust = 1, size=7))+
xlab("Schools") +
ylab("Average Rate of Suspensions Per Enrollment")+
ggtitle("Average Rate of Suspensions Per Enrollment of Foster Youth in Sacramento County") +
theme(plot.title = element_text(size = 11, face = "bold"))+
scale_fill_discrete(name = "Groups", labels = c("Rosa Parks Elementary", "La Vista Center", "Palmiter Special Education", "Harriet G. Eddy Middle", "C. K. McClatchy High", "Monterey Trail High", "Del Campo High", "Casa Roble Fundamental High", "John F. Kennedy High", "San Juan High", "Pleasant Grove High", "Encina Preparatory High", "Samuel Jackman Middle", "Mesa Verde High", "Rio Americano High"))+
theme(legend.position="none")
Sac
Sacramento County has 335 schools in the county. 78 of those schools have suspended at least one foster youth in the 2017-2018 school year. The above graph illustrates the 15 schools with the highest suspension rates in the county. The top 15 schools have between 11 and 46 foster youth attending their school. The other schools that suspended foster youth were in about the same range of foster youth attending their school as the top 15 schools. There were two schools far outside of this range: El Centro Junior/Senior High had 251 foster youth attending their school(according to the California Department of Education.11 Self-reported data from El Centro Jr./Sr. High in their 2017-2018 School Accountability Report Card states that there are 112 students attending 8-12th grade at the school, with no report of 5-7th grade.19), where they only suspended 4% of their foster youth and Options for Youth-San Juan had 58 foster youth and suspended 2% of their foster youth.